TORTOISE_ORM = {
    'connections': {
        'default': {
            # 'engine': 'tortoise.backends.asyncpg',  PostgreSQL
            'engine': 'tortoise.backends.mysql',  # MySQL or Mariadb
            'credentials': {
                'host': '127.0.0.1',
                'port': '3306',
                'user': 'root',
                'password': 'root',
                'database': 'user_db',
                'minsize': 1,
                'maxsize': 3,
                'charset': 'utf8mb4',
                "echo": True,
                'connect_timeout': 10,
                'pool_recycle': 3600
            }
        },
    },
    'apps': {
        'models': {
            'models': ['models.m', "aerich.models"],
            'default_connection': 'default',

        }
    },
    'use_tz': False,
    'timezone': 'Asia/Shanghai'
}

# Elasticsearch 集群配置
ELASTICSEARCH_CONFIG = {
    # 集群节点列表（支持多节点配置）
    'hosts': [
        {'host': 'localhost', 'port': 9200, 'scheme': 'http'},
        # 如果有多个节点，可以继续添加：
        # {'host': 'localhost', 'port': 9201, 'scheme': 'http'},
        # {'host': 'localhost', 'port': 9202, 'scheme': 'http'},
    ],
    
    # 认证配置（如果启用了安全认证）
    'basic_auth': None,  # 例如: ('username', 'password')
    # 'basic_auth': ('elastic', 'your_password'),  # 取消注释并填写您的用户名和密码
    
    # API Key 认证（可选，与 basic_auth 二选一）
    'api_key': None,  # 例如: ('id', 'api_key')
    
    # 连接配置
    'request_timeout': 30,  # 请求超时时间（秒）
    'max_retries': 3,  # 最大重试次数
    'retry_on_timeout': True,  # 超时时是否重试
    
    # SSL/TLS 配置（如果使用 HTTPS）
    'verify_certs': False,  # 是否验证 SSL 证书
    'ssl_show_warn': False,  # 是否显示 SSL 警告
    # 'ca_certs': '/path/to/ca.crt',  # CA 证书路径
    
    # 连接池配置
    'maxsize': 25,  # 连接池最大连接数
}

# Elasticsearch 索引配置
ELASTICSEARCH_INDICES = {
    # 示例：用户索引
    'users': {
        'index': 'users',
        'settings': {
            'number_of_shards': 3,  # 分片数
            'number_of_replicas': 2,  # 副本数
        },
        'mappings': {
            'properties': {
                'user_id': {'type': 'keyword'},
                'username': {'type': 'text', 'analyzer': 'standard'},
                'email': {'type': 'keyword'},
                'created_at': {'type': 'date'},
                'updated_at': {'type': 'date'},
            }
        }
    },
    
    # 示例：运动记录索引
    'exercises': {
        'index': 'exercises',
        'settings': {
            'number_of_shards': 3,
            'number_of_replicas': 2,
        },
        'mappings': {
            'properties': {
                'exercise_id': {'type': 'keyword'},
                'user_id': {'type': 'keyword'},
                'exercise_name': {'type': 'text', 'analyzer': 'standard'},
                'exercise_type': {'type': 'keyword'},
                'duration': {'type': 'integer'},  # 持续时间（分钟）
                'calories': {'type': 'float'},  # 卡路里
                'description': {'type': 'text', 'analyzer': 'standard'},
                'created_at': {'type': 'date'},
            }
        }
    },
    
    # 示例：日志索引
    'logs': {
        'index': 'application_logs',
        'settings': {
            'number_of_shards': 2,
            'number_of_replicas': 1,
        },
        'mappings': {
            'properties': {
                'log_id': {'type': 'keyword'},
                'level': {'type': 'keyword'},
                'message': {'type': 'text'},
                'timestamp': {'type': 'date'},
                'source': {'type': 'keyword'},
            }
        }
    }
}